#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N=2e5+5;
int n,m,rt,trt;
int fa[N],deep[N],si[N],hson[N],top[N],dfn[N],rk[N],w[N],cnt=0;
vector<int> adj[N];

int dfs1(int u,int dep){
    hson[u]=-1;
    deep[u]=dep;
    si[u]=1;
    for(int i=0;i<adj[u].size();i++){
        if(adj[u][i]==fa[u])continue;
        fa[adj[u][i]]=u;
        si[u]+=dfs1(adj[u][i],dep+1);
        if(hson[u]==-1||si[adj[u][i]]>si[hson[u]]){
            hson[u]=adj[u][i];
        }
    }
    return si[u];
}

void dfs2(int u,int t){
    top[u]=t;
    dfn[u]=++cnt;
    rk[cnt]=u;
    if(hson[u]!=-1){
        dfs2(hson[u],t);
    }
    for(int i=0;i<adj[u].size();i++){
        if(adj[u][i]!=hson[u]&&adj[u][i]!=fa[u])dfs2(adj[u][i],adj[u][i]);
    }
}

int lca(int u,int v){
    while(top[u]!=top[v]){
        if(deep[top[u]]>deep[top[v]]){
            u=fa[top[u]];
        }else{
            v=fa[top[v]];
        }
    }
    return deep[u]>deep[v]?v:u;
}

void solve(){
    cin>>n>>m;
    for(int i=0;i<n-1;i++){
        int u,v;
        cin>>u>>v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    for(int i=1;i<=n;i++){
        cin>>w[i];
    }
    cin>>rt;
    while(m--){
        int op;
        cin>>op;
        if(op==1){
            cin>>trt;
        }else if(op==2){

        }else{

        }
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}